/**
 * Copyright (C) 2018-2021
 * All rights reserved, Designed By www.yixiang.co

 */
package co.yixiang.modules.product.service.dto;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.util.Map;

/**
 * @ClassName ProductFormatDTO
 * @Author hupeng <610796224@qq.com>
 * @Date 2019/10/12
 **/

@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
public class ProductFormatDto {

    private String sku = "";

    @JsonProperty("bar_code")
    private String barCode = "";

    private Double brokerage = 0d;

    @JsonProperty("brokerage_two")
    private Double brokerageTwo = 0d;

    private Double price = 0d;

    @JsonProperty("ot_price")
    private Double otPrice = 0d;

    private Double cost = 0d;

    private Integer stock = 0;

    private Integer integral = 0;

    private String pic = "";

    private String value1 = "";

    private String value2 = "";

    private Double volume = 0d;

    private Double weight = 0d;
    @JsonProperty("pink_price")
    private Double pinkPrice = 0d;
    @JsonProperty("pink_stock")
    private Integer pinkStock = 0;
    @JsonProperty("seckill_price")
    private Double seckillPrice = 0d;
    @JsonProperty("seckill_stock")
    private Integer seckillStock = 0;

    private Map<String, String> detail;

    public static ProductFormatDtoBuilder builder() {
        return new ProductFormatDtoBuilder();
    }

    public static class ProductFormatDtoBuilder {
        private String sku;
        private String barCode;
        private Double brokerage;
        private Double brokerageTwo;
        private Double price;
        private Double otPrice;
        private Double cost;
        private Integer stock;
        private Integer integral;
        private String pic;
        private String value1;
        private String value2;
        private Double volume;
        private Double weight;
        private Double pinkPrice;
        private Integer pinkStock;
        private Double seckillPrice;
        private Integer seckillStock;
        private Map<String, String> detail;

        ProductFormatDtoBuilder() {
        }

        public ProductFormatDtoBuilder sku(String sku) {
            this.sku = sku;
            return this;
        }

        public ProductFormatDtoBuilder barCode(String barCode) {
            this.barCode = barCode;
            return this;
        }

        public ProductFormatDtoBuilder brokerage(Double brokerage) {
            this.brokerage = brokerage;
            return this;
        }

        public ProductFormatDtoBuilder brokerageTwo(Double brokerageTwo) {
            this.brokerageTwo = brokerageTwo;
            return this;
        }

        public ProductFormatDtoBuilder price(Double price) {
            this.price = price;
            return this;
        }

        public ProductFormatDtoBuilder otPrice(Double otPrice) {
            this.otPrice = otPrice;
            return this;
        }

        public ProductFormatDtoBuilder cost(Double cost) {
            this.cost = cost;
            return this;
        }

        public ProductFormatDtoBuilder stock(Integer stock) {
            this.stock = stock;
            return this;
        }

        public ProductFormatDtoBuilder integral(Integer integral) {
            this.integral = integral;
            return this;
        }

        public ProductFormatDtoBuilder pic(String pic) {
            this.pic = pic;
            return this;
        }

        public ProductFormatDtoBuilder value1(String value1) {
            this.value1 = value1;
            return this;
        }

        public ProductFormatDtoBuilder value2(String value2) {
            this.value2 = value2;
            return this;
        }

        public ProductFormatDtoBuilder volume(Double volume) {
            this.volume = volume;
            return this;
        }

        public ProductFormatDtoBuilder weight(Double weight) {
            this.weight = weight;
            return this;
        }

        public ProductFormatDtoBuilder pinkPrice(Double pinkPrice) {
            this.pinkPrice = pinkPrice;
            return this;
        }

        public ProductFormatDtoBuilder pinkStock(Integer pinkStock) {
            this.pinkStock = pinkStock;
            return this;
        }

        public ProductFormatDtoBuilder seckillPrice(Double seckillPrice) {
            this.seckillPrice = seckillPrice;
            return this;
        }

        public ProductFormatDtoBuilder seckillStock(Integer seckillStock) {
            this.seckillStock = seckillStock;
            return this;
        }

        public ProductFormatDtoBuilder detail(Map<String, String> detail) {
            this.detail = detail;
            return this;
        }

        public ProductFormatDto build() {
            return new ProductFormatDto(sku, barCode, brokerage, brokerageTwo, price, otPrice, cost, stock, integral, pic, value1, value2, volume, weight, pinkPrice, pinkStock, seckillPrice, seckillStock, detail);
        }

        public String toString() {
            return "ProductFormatDto.ProductFormatDtoBuilder(sku=" + this.sku + ", barCode=" + this.barCode + ", brokerage=" + this.brokerage + ", brokerageTwo=" + this.brokerageTwo + ", price=" + this.price + ", otPrice=" + this.otPrice + ", cost=" + this.cost + ", stock=" + this.stock + ", integral=" + this.integral + ", pic=" + this.pic + ", value1=" + this.value1 + ", value2=" + this.value2 + ", volume=" + this.volume + ", weight=" + this.weight + ", pinkPrice=" + this.pinkPrice + ", pinkStock=" + this.pinkStock + ", seckillPrice=" + this.seckillPrice + ", seckillStock=" + this.seckillStock + ", detail=" + this.detail + ")";
        }
    }
}
